import Vue from 'vue'
import axios from 'axios'
import { Toast } from 'vant'
import store from '../store'
Vue.use(axios)

Vue.use(Toast)

axios.defaults.baseURL = 'http://toutiao.itheima.net'

// #region  拦截器

// 添加请求拦截器
axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // loading效果
    Toast.loading({
      duration: 0, // 持续展示 toast
      forbidClick: true,
      overlay: true
    })

    // 身份认证
    const token = store.state.tokenInfo.token
    // console.log(token);

    if (token != null) {
      config.headers.Authorization = 'Bearer ' + token
    }
    // console.log(config);
    return config
  },
  function (error) {
    // 对发送错误做点什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axios.interceptors.response.use(
  response => {
    // 隐藏 loading 提示效果
    Toast.clear()
    return response
  },
  error => {
    // 在请求失败的时候，关闭 loading 提示效果
    Toast.clear()
    // console.log(error)
    if (error.response && error.response.status === 401) {
      store.commit('clearData')
    }
    return Promise.reject(error)
  }
)

// #endregion

export default axios
